// components/banner/banner.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 轮播图数据
    banners: {
      type: Array,
      value: []
    },
    // 是否显示指示点
    indicatorDots: {
      type: Boolean,
      value: true
    },
    // 是否自动播放
    autoplay: {
      type: Boolean,
      value: true
    },
    // 自动播放间隔
    interval: {
      type: Number,
      value: 5000
    },
    // 滑动动画时长
    duration: {
      type: Number,
      value: 500
    },
    // 是否采用衔接滑动
    circular: {
      type: Boolean,
      value: true
    },
    // 前边距
    previousMargin: {
      type: String,
      value: '20rpx'
    },
    // 后边距
    nextMargin: {
      type: String,
      value: '20rpx'
    },
    // 默认图片
    defaultImage: {
      type: String,
      value: 'https://via.placeholder.com/750x360/8B4513/FFFFFF?text=Museum+Banner'
    },
    // 是否显示自定义指示器
    showCustomIndicator: {
      type: Boolean,
      value: false
    },
    // 轮播图高度
    height: {
      type: String,
      value: '360rpx'
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    currentIndex: 0
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 轮播图点击事件
     */
    onBannerTap(e) {
      const { index, item } = e.currentTarget.dataset
      
      this.triggerEvent('bannerTap', {
        index,
        item,
        banners: this.data.banners
      })

      // 如果有链接，进行跳转
      if (item && item.link) {
        this.navigateToLink(item.link, item.linkType)
      }
    },

    /**
     * 指示器点击事件
     */
    onIndicatorTap(e) {
      const { index } = e.currentTarget.dataset
      this.setData({
        currentIndex: index
      })
    },

    /**
     * 轮播图切换事件
     */
    onSwiperChange(e) {
      const { current } = e.detail
      this.setData({
        currentIndex: current
      })

      this.triggerEvent('bannerChange', {
        current,
        item: this.data.banners[current]
      })
    },

    /**
     * 图片加载失败
     */
    onImageError(e) {
      const { index } = e.currentTarget.dataset
      const banners = [...this.data.banners]
      
      if (banners[index]) {
        banners[index].image = this.data.defaultImage
        this.setData({
          banners
        })
      }

      this.triggerEvent('imageError', {
        index,
        item: banners[index]
      })
    },

    /**
     * 根据链接类型进行跳转
     */
    navigateToLink(link, linkType = 'navigate') {
      if (!link) return

      const navigateMap = {
        'navigate': wx.navigateTo,
        'redirect': wx.redirectTo,
        'reLaunch': wx.reLaunch,
        'switchTab': wx.switchTab,
        'web': (options) => {
          wx.navigateTo({
            url: `/pages/webview/webview?url=${encodeURIComponent(options.url)}`
          })
        },
        'external': (options) => {
          wx.showModal({
            title: '提示',
            content: '即将打开外部链接',
            success: (res) => {
              if (res.confirm) {
                // 复制链接到剪贴板
                wx.setClipboardData({
                  data: options.url,
                  success: () => {
                    wx.showToast({
                      title: '链接已复制',
                      icon: 'success'
                    })
                  }
                })
              }
            }
          })
        }
      }

      const navigateFunc = navigateMap[linkType] || navigateMap['navigate']
      
      try {
        navigateFunc({
          url: link,
          fail: (err) => {
            console.error('导航失败:', err)
            wx.showToast({
              title: '页面跳转失败',
              icon: 'none'
            })
          }
        })
      } catch (error) {
        console.error('导航异常:', error)
      }
    }
  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    attached() {
      // 如果没有轮播图数据，设置默认数据
      if (!this.data.banners || this.data.banners.length === 0) {
        this.setData({
          banners: [
            {
              id: 1,
              image: 'https://via.placeholder.com/750x360/8B4513/FFFFFF?text=Welcome+to+Museum',
              title: '欢迎来到历史博物馆',
              description: '探索历史，感受文化魅力'
            },
            {
              id: 2, 
              image: 'https://via.placeholder.com/750x360/654321/FFFFFF?text=Exhibition+Hall',
              title: '精彩展览',
              description: '丰富的展品等您参观'
            },
            {
              id: 3,
              image: 'https://via.placeholder.com/750x360/8B6914/FFFFFF?text=Book+Now',
              title: '预约参观',
              description: '提前预约，享受更好的参观体验'
            }
          ]
        })
      }
    }
  }
})